#ifndef JSONVISITOR_H_
#define JSONVISITOR_H_

#include "FormalParser.h"
#include "../ast_visitor.hpp"
#include "../json_visitor_helper.hpp"

/**
  @brief The JsonVisitor class
  
  @date Auto generated on 2022/05/26 17:20:52
*/
namespace cyclone::parser
{

class JsonVisitor : public AstVisitor<Json>
{
public:
        Json visit(ParseTree *ctx);
		Json visit(TerminalNode *ctx);
		Json visit(ErrorNode *ctx);
    Json visit(Token *ctx);
		Json defaultResult();

         Json  visit ( FormalParser::BaseClassContext * ctx ) ;
         Json  visit ( FormalParser::ParameterContext * ctx ) ;
         Json  visit ( FormalParser::ParameterListContext * ctx ) ;
         Json  visit ( FormalParser::TSTypeAliasDeclarationContext * ctx ) ;
         Json  visit ( FormalParser::ObjectPatternContext * ctx ) ;
         Json  visit ( FormalParser::RestElementContext * ctx ) ;
         Json  visit ( FormalParser::IdentifierPatternContext * ctx ) ;
         Json  visit ( FormalParser::ForInStatementContext * ctx ) ;
         Json  visit ( FormalParser::ArrayPatternContext * ctx ) ;
         Json  visit ( FormalParser::AssignmentPatternContext * ctx ) ;
         Json  visit ( FormalParser::InitializerContext * ctx ) ;
         Json  visit ( FormalParser::AdvancedParameterListContext * ctx ) ;
         Json  visit ( FormalParser::ArrayElementContext * ctx ) ;
         Json  visit ( FormalParser::TryStatementContext * ctx ) ;
         Json  visit ( FormalParser::PropertyGetterContext * ctx ) ;
         Json  visit ( FormalParser::WhileStatementContext * ctx ) ;
         Json  visit ( FormalParser::ParenthesizedExpressionContext * ctx ) ;
         Json  visit ( FormalParser::EmptyStatementContext * ctx ) ;
         Json  visit ( FormalParser::RequiredParameterListContext * ctx ) ;
         Json  visit ( FormalParser::StatementListContext * ctx ) ;
         Json  visit ( FormalParser::AdvancedParameterContext * ctx ) ;
         Json  visit ( FormalParser::OptionalParameterContext * ctx ) ;
         Json  visit ( FormalParser::RequiredParameterContext * ctx ) ;
         Json  visit ( FormalParser::AccessibilityModifierContext * ctx ) ;
         Json  visit ( FormalParser::UpdateExpressionContext * ctx ) ;
         Json  visit ( FormalParser::ImportAliasDeclarationContext * ctx ) ;
         Json  visit ( FormalParser::InterfaceExtendsClauseContext * ctx ) ;
         Json  visit ( FormalParser::ContinueStatementContext * ctx ) ;
         Json  visit ( FormalParser::ClassOrInterfaceTypeListContext * ctx ) ;
         Json  visit ( FormalParser::ObjectPatternElementArrayListContext * ctx ) ;
         Json  visit ( FormalParser::ClassExpressionContext * ctx ) ;
         Json  visit ( FormalParser::ThrowStatementContext * ctx ) ;
         Json  visit ( FormalParser::EnumDeclarationContext * ctx ) ;
         Json  visit ( FormalParser::EnumBodyContext * ctx ) ;
         Json  visit ( FormalParser::EnumMemberListContext * ctx ) ;
         Json  visit ( FormalParser::FromBlockContext * ctx ) ;
         Json  visit ( FormalParser::ForOfStatementContext * ctx ) ;
         Json  visit ( FormalParser::GetterContext * ctx ) ;
         Json  visit ( FormalParser::SwitchStatementContext * ctx ) ;
         Json  visit ( FormalParser::EnumMemberContext * ctx ) ;
         Json  visit ( FormalParser::TSEnumDeclarationContext * ctx ) ;
         Json  visit ( FormalParser::BitXorExpressionContext * ctx ) ;
         Json  visit ( FormalParser::BlockStatementContext * ctx ) ;
         Json  visit ( FormalParser::ProgramContext * ctx ) ;
         Json  visit ( FormalParser::BaseFunctionContext * ctx ) ;
         Json  visit ( FormalParser::SourceElementContext * ctx ) ;
         Json  visit ( FormalParser::ImportStatementContext * ctx ) ;
         Json  visit ( FormalParser::DeclarationStatementContext * ctx ) ;
         Json  visit ( FormalParser::ExportStatementContext * ctx ) ;
         Json  visit ( FormalParser::ObjectExpressionContext * ctx ) ;
         Json  visit ( FormalParser::CaseClauseContext * ctx ) ;
         Json  visit ( FormalParser::TSModuleDeclarationContext * ctx ) ;
         Json  visit ( FormalParser::FunctionDeclarationContext * ctx ) ;
         Json  visit ( FormalParser::BitAndExpressionContext * ctx ) ;
         Json  visit ( FormalParser::IfStatementContext * ctx ) ;
         Json  visit ( FormalParser::DoWhileStatementContext * ctx ) ;
         Json  visit ( FormalParser::ForStatementContext * ctx ) ;
         Json  visit ( FormalParser::BreakStatementContext * ctx ) ;
         Json  visit ( FormalParser::ReturnStatementContext * ctx ) ;
         Json  visit ( FormalParser::VariableDeclaratorListContext * ctx ) ;
         Json  visit ( FormalParser::WithStatementContext * ctx ) ;
         Json  visit ( FormalParser::LabeledStatementContext * ctx ) ;
         Json  visit ( FormalParser::ObjectOrArrayGenericTypeContext * ctx ) ;
         Json  visit ( FormalParser::DebuggerStatementContext * ctx ) ;
         Json  visit ( FormalParser::ExpressionStatementContext * ctx ) ;
         Json  visit ( FormalParser::BraceBlockContext * ctx ) ;
         Json  visit ( FormalParser::DefaultClauseContext * ctx ) ;
         Json  visit ( FormalParser::VariableDeclarationContext * ctx ) ;
         Json  visit ( FormalParser::DeclarationContext * ctx ) ;
         Json  visit ( FormalParser::BitOrExpressionContext * ctx ) ;
         Json  visit ( FormalParser::MultipleImportStatementContext * ctx ) ;
         Json  visit ( FormalParser::BaseForXStatementContext * ctx ) ;
         Json  visit ( FormalParser::VardeclContext * ctx ) ;
         Json  visit ( FormalParser::VariableDeclaratorContext * ctx ) ;
         Json  visit ( FormalParser::ForInitStatementContext * ctx ) ;
         Json  visit ( FormalParser::VarModifierContext * ctx ) ;
         Json  visit ( FormalParser::SwitchCaseListContext * ctx ) ;
         Json  visit ( FormalParser::CaseClausesContext * ctx ) ;
         Json  visit ( FormalParser::AdditiveOperatorContext * ctx ) ;
         Json  visit ( FormalParser::CatchProductionContext * ctx ) ;
         Json  visit ( FormalParser::FinallyProductionContext * ctx ) ;
         Json  visit ( FormalParser::ClassBodyContext * ctx ) ;
         Json  visit ( FormalParser::PropertyExpressionAssignmentContext * ctx ) ;
         Json  visit ( FormalParser::ClassExtendsClauseContext * ctx ) ;
         Json  visit ( FormalParser::PropertyDefinitionContext * ctx ) ;
         Json  visit ( FormalParser::ImplementsClauseContext * ctx ) ;
         Json  visit ( FormalParser::ClassElementContext * ctx ) ;
         Json  visit ( FormalParser::MethodDefinitionContext * ctx ) ;
         Json  visit ( FormalParser::GeneratorMethodContext * ctx ) ;
         Json  visit ( FormalParser::GeneratorFunctionDeclarationContext * ctx ) ;
         Json  visit ( FormalParser::GeneratorBlockContext * ctx ) ;
         Json  visit ( FormalParser::GeneratorDefinitionContext * ctx ) ;
         Json  visit ( FormalParser::IteratorBlockContext * ctx ) ;
         Json  visit ( FormalParser::IteratorDefinitionContext * ctx ) ;
         Json  visit ( FormalParser::FunctionBodyContext * ctx ) ;
         Json  visit ( FormalParser::MethodPropertyContext * ctx ) ;
         Json  visit ( FormalParser::SourceArrayListContext * ctx ) ;
         Json  visit ( FormalParser::SpreadElementContext * ctx ) ;
         Json  visit ( FormalParser::BitShiftExpressionContext * ctx ) ;
         Json  visit ( FormalParser::LogicalExpressionContext * ctx ) ;
         Json  visit ( FormalParser::ArrayElementArrayListContext * ctx ) ;
         Json  visit ( FormalParser::ArrayPatternElementArrayListContext * ctx ) ;
         Json  visit ( FormalParser::ObjectElementContext * ctx ) ;
         Json  visit ( FormalParser::ObjectElementArrayListContext * ctx ) ;
         Json  visit ( FormalParser::PropertyNameContext * ctx ) ;
         Json  visit ( FormalParser::FunctionReturnTypeContext * ctx ) ;
         Json  visit ( FormalParser::PropertyKeyContext * ctx ) ;
         Json  visit ( FormalParser::ComputedPropertyExpressionAssignmentContext * ctx ) ;
         Json  visit ( FormalParser::PropertySetterContext * ctx ) ;
         Json  visit ( FormalParser::PropertyShorthandContext * ctx ) ;
         Json  visit ( FormalParser::ShorthandAssignmentPropertyContext * ctx ) ;
         Json  visit ( FormalParser::AssignmentPatternInObjectContext * ctx ) ;
         Json  visit ( FormalParser::ObjectPatternElementContext * ctx ) ;
         Json  visit ( FormalParser::GetAccessorContext * ctx ) ;
         Json  visit ( FormalParser::BitShiftOperatorContext * ctx ) ;
         Json  visit ( FormalParser::SetAccessorContext * ctx ) ;
         Json  visit ( FormalParser::ArgumentArrayListContext * ctx ) ;
         Json  visit ( FormalParser::ArgumentContext * ctx ) ;
         Json  visit ( FormalParser::RelationalExpressionContext * ctx ) ;
         Json  visit ( FormalParser::ExpressionSequenceContext * ctx ) ;
         Json  visit ( FormalParser::UpdateOperatorContext * ctx ) ;
         Json  visit ( FormalParser::UnaryOperatorContext * ctx ) ;
         Json  visit ( FormalParser::ExponentiationOperatorContext * ctx ) ;
         Json  visit ( FormalParser::MultiplicativeOperatorContext * ctx ) ;
         Json  visit ( FormalParser::RelationalOperatorContext * ctx ) ;
         Json  visit ( FormalParser::InstanceofOperatorContext * ctx ) ;
         Json  visit ( FormalParser::InOperatorContext * ctx ) ;
         Json  visit ( FormalParser::EqualityOperatorContext * ctx ) ;
         Json  visit ( FormalParser::BitAndOperatorContext * ctx ) ;
         Json  visit ( FormalParser::BitOrOperatorContext * ctx ) ;
         Json  visit ( FormalParser::BitXorOperatorContext * ctx ) ;
         Json  visit ( FormalParser::FunctionExpressionContext * ctx ) ;
         Json  visit ( FormalParser::ObjectPropertyPairContext * ctx ) ;
         Json  visit ( FormalParser::ArrowFunctionExpressionContext * ctx ) ;
         Json  visit ( FormalParser::MemberExpressionContext * ctx ) ;
         Json  visit ( FormalParser::NewExpressionContext * ctx ) ;
         Json  visit ( FormalParser::CallExpressionContext * ctx ) ;
         Json  visit ( FormalParser::UnaryExpressionContext * ctx ) ;
         Json  visit ( FormalParser::ExponentiationExpressionContext * ctx ) ;
         Json  visit ( FormalParser::MultiplicativeExpressionContext * ctx ) ;
         Json  visit ( FormalParser::AdditiveExpressionContext * ctx ) ;
         Json  visit ( FormalParser::InstanceofExpressionContext * ctx ) ;
         Json  visit ( FormalParser::InExpressionContext * ctx ) ;
         Json  visit ( FormalParser::EqualityExpressionContext * ctx ) ;
         Json  visit ( FormalParser::ConditionalExpressionContext * ctx ) ;
         Json  visit ( FormalParser::QuestionMarkFollowedByDecimalDirectlyConditionExpressionContext * ctx ) ;
         Json  visit ( FormalParser::PatternInvolvedAssignmentExpressionContext * ctx ) ;
         Json  visit ( FormalParser::AssignmentExpressionContext * ctx ) ;
         Json  visit ( FormalParser::TemplateLiteralExpressionContext * ctx ) ;
         Json  visit ( FormalParser::TaggedTemplateExpressionContext * ctx ) ;
         Json  visit ( FormalParser::IteratorsExpressionContext * ctx ) ;
         Json  visit ( FormalParser::GeneratorsExpressionContext * ctx ) ;
         Json  visit ( FormalParser::GeneratorsFunctionExpressionContext * ctx ) ;
         Json  visit ( FormalParser::YieldExpressionContext * ctx ) ;
         Json  visit ( FormalParser::AwaitExpressionContext * ctx ) ;
         Json  visit ( FormalParser::ImportExpressionContext * ctx ) ;
         Json  visit ( FormalParser::MetaPropertyContext * ctx ) ;
         Json  visit ( FormalParser::ParenthesizedPrimTypeContext * ctx ) ;
         Json  visit ( FormalParser::ThisExpressionContext * ctx ) ;
         Json  visit ( FormalParser::IdentifierExpressionContext * ctx ) ;
         Json  visit ( FormalParser::SuperExpressionContext * ctx ) ;
         Json  visit ( FormalParser::LiteralExpressionContext * ctx ) ;
         Json  visit ( FormalParser::ArrayExpressionContext * ctx ) ;
         Json  visit ( FormalParser::OutputContext * ctx ) ;
         Json  visit ( FormalParser::TSAsExpressionContext * ctx ) ;
         Json  visit ( FormalParser::IdentifierContext * ctx ) ;
         Json  visit ( FormalParser::MetaPropertyIdentifierContext * ctx ) ;
         Json  visit ( FormalParser::PrivateIdentifierContext * ctx ) ;
         Json  visit ( FormalParser::BracketMemberExpressionContext * ctx ) ;
         Json  visit ( FormalParser::DotMemberExpressionContext * ctx ) ;
         Json  visit ( FormalParser::PrivateMemberExpressionContext * ctx ) ;
         Json  visit ( FormalParser::GenericKindContext * ctx ) ;
         Json  visit ( FormalParser::ArrowFunctionParametersContext * ctx ) ;
         Json  visit ( FormalParser::ArrowFunctionBodyContext * ctx ) ;
         Json  visit ( FormalParser::AssignmentOperatorContext * ctx ) ;
         Json  visit ( FormalParser::NumericLiteralContext * ctx ) ;
         Json  visit ( FormalParser::LiteralContext * ctx ) ;
         Json  visit ( FormalParser::TemplateLiteralContext * ctx ) ;
         Json  visit ( FormalParser::AtomTemplateStringContext * ctx ) ;
         Json  visit ( FormalParser::BraceTemplateStringContext * ctx ) ;
         Json  visit ( FormalParser::KeywordContext * ctx ) ;
         Json  visit ( FormalParser::SetterContext * ctx ) ;
         Json  visit ( FormalParser::EosContext * ctx ) ;
         Json  visit ( FormalParser::AssignableContext * ctx ) ;
         Json  visit ( FormalParser::TypeAnnotationContext * ctx ) ;
         Json  visit ( FormalParser::QualifiedNameContext * ctx ) ;
         Json  visit ( FormalParser::TypeNameContext * ctx ) ;
         Json  visit ( FormalParser::JsPrimitiveTypeContext * ctx ) ;
         Json  visit ( FormalParser::ExtendedPrimitiveTypeContext * ctx ) ;
         Json  visit ( FormalParser::TypeListContext * ctx ) ;
         Json  visit ( FormalParser::AnonymousObjectPropertyListSeparatorContext * ctx ) ;
         Json  visit ( FormalParser::AnonymousObjectPropertyListContext * ctx ) ;
         Json  visit ( FormalParser::CommaGenericContext * ctx ) ;
         Json  visit ( FormalParser::AngleGenericContext * ctx ) ;
         Json  visit ( FormalParser::PrimitiveTypeContext * ctx ) ;
         Json  visit ( FormalParser::GenericTypeContext * ctx ) ;
         Json  visit ( FormalParser::TupleTypeContext * ctx ) ;
         Json  visit ( FormalParser::UnionTypeContext * ctx ) ;
         Json  visit ( FormalParser::StructContext * ctx ) ;
         Json  visit ( FormalParser::TypeReferenceContext * ctx ) ;
         Json  visit ( FormalParser::TypeAnnotContext * ctx ) ;
         Json  visit ( FormalParser::InputContext * ctx ) ;
         Json  visit ( FormalParser::TypePredicateContext * ctx ) ;

};

} // namespace cyclone::parser

#endif // JSONVISITOR_H_
